"""
模型模块初始化文件
"""
from flask_sqlalchemy import SQLAlchemy
from flask_login import LoginManager

# 创建数据库实例
db = SQLAlchemy()

# 创建登录管理器实例
login_manager = LoginManager()

# 导入基础模型
from .base import set_db, get_db

# 设置数据库实例
set_db(db)

# 导入基础模型类
from .base import BaseModel

# 导入用户模型
from .user import User, Notification, UserActivity

# 导入项目模型
from .project import (
    Project, ProjectTask, ProjectMilestone, TaskDependency, 
    ProjectCost, ProjectRole, ProjectLog, WeeklyReport, 
    TaskFollow, TaskReview, WorkHour
)

# 导入客户模型
from .customer import (
    Customer, Contact, FollowUp, CustomerLog, 
    Lead, LeadFollowUp, LeadLog
)

# 导入地址模型
from .address import Address, Region

# 导入消息模型
from .message import Message, MessageRecipient, MessageTemplate

# Flask-Login用户加载函数
@login_manager.user_loader
def load_user(user_id):
    return User.query.get(int(user_id))

# 导出所有模型
__all__ = [
    # 数据库和登录管理器
    'db', 'login_manager', 'get_db',
    
    # 基础模型
    'BaseModel',
    
    # 用户模型
    'User', 'Notification', 'UserActivity',
    
    # 项目模型
    'Project', 'ProjectTask', 'ProjectMilestone', 'TaskDependency',
    'ProjectCost', 'ProjectRole', 'ProjectLog', 'WeeklyReport',
    'TaskFollow', 'TaskReview', 'WorkHour',
    
    # 客户模型
    'Customer', 'Contact', 'FollowUp', 'CustomerLog',
    'Lead', 'LeadFollowUp', 'LeadLog',
    
    # 地址模型
    'Address', 'Region',
    
    # 消息模型
    'Message', 'MessageRecipient', 'MessageTemplate',
]